/*******************************************************************************
 * KindEditor - WYSIWYG HTML Editor for Internet
 * Copyright (C) 2006-2011 kindsoft.net
 *
 * @author Roddy <luolonghao@gmail.com>
 * @site http://www.kindsoft.net/
 * @licence http://www.kindsoft.net/license.php
 *******************************************************************************/

// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5

KindEditor.plugin("baidumap", function(K) {
  var self = this,
    name = "baidumap",
    lang = self.lang(name + ".");
  var mapWidth = K.undef(self.mapWidth, 558);
  var mapHeight = K.undef(self.mapHeight, 360);
  self.clickToolbar(name, function() {
    var html = [
      '<div style="padding:10px 20px;">',
      '<div class="ke-header">',
      // left start
      '<div class="ke-left">',
      lang.address +
        ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
      '<span class="ke-button-common ke-button-outer">',
      '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' +
        lang.search +
        '" />',
      "</span>",
      "</div>",
      // right start
      '<div class="ke-right">',
      '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' +
        lang.insertDynamicMap +
        "</label>",
      "</div>",
      '<div class="ke-clearfix"></div>',
      "</div>",
      '<div class="ke-map" style="width:' +
        mapWidth +
        "px;height:" +
        mapHeight +
        'px;"></div>',
      "</div>"
    ].join("");
    var dialog = self.createDialog({
      name: name,
      width: mapWidth + 42,
      title: self.lang(name),
      body: html,
      yesBtn: {
        name: self.lang("yes"),
        click: function(e) {
          var map = win.map;
          var centerObj = map.getCenter();
          var center = centerObj.lng + "," + centerObj.lat;
          var zoom = map.getZoom();
          var url = [
            checkbox[0].checked
              ? self.pluginsPath + "baidumap/index.html"
              : "http://api.map.baidu.com/staticimage",
            "?center=" + encodeURIComponent(center),
            "&zoom=" + encodeURIComponent(zoom),
            "&width=" + mapWidth,
            "&height=" + mapHeight,
            "&markers=" + encodeURIComponent(center),
            "&markerStyles=" + encodeURIComponent("l,A")
          ].join("");
          if (checkbox[0].checked) {
            self.insertHtml(
              '<iframe src="' +
                url +
                '" frameborder="0" style="width:' +
                (mapWidth + 2) +
                "px;height:" +
                (mapHeight + 2) +
                'px;"></iframe>'
            );
          } else {
            self.exec("insertimage", url);
          }
          self.hideDialog().focus();
        }
      },
      beforeRemove: function() {
        searchBtn.remove();
        if (doc) {
          doc.write("");
        }
        iframe.remove();
      }
    });
    var div = dialog.div,
      addressBox = K('[name="address"]', div),
      searchBtn = K('[name="searchBtn"]', div),
      checkbox = K('[name="insertDynamicMap"]', dialog.div),
      win,
      doc;
    var iframe = K(
      '<iframe class="ke-textarea" frameborder="0" src="' +
        self.pluginsPath +
        'baidumap/map.html" style="width:' +
        mapWidth +
        "px;height:" +
        mapHeight +
        'px;"></iframe>'
    );
    function ready() {
      win = iframe[0].contentWindow;
      doc = K.iframeDoc(iframe);
    }
    iframe.bind("load", function() {
      iframe.unbind("load");
      if (K.IE) {
        ready();
      } else {
        setTimeout(ready, 0);
      }
    });
    K(".ke-map", div).replaceWith(iframe);
    // search map
    searchBtn.click(function() {
      win.search(addressBox.val());
    });
  });
});
